Funkce HttpSendRequest a predavani POSTovanych dat
Otázka od: Martin Falta
21. 10. 2002 22:05
Ahoj,
potreboval bych nejakou ukazku kodu s pouzitim %subj%. Jde mi o to, ze
delam aplikaci, ktera musi komunikovat s webem a musim tam pouzit
session. Nenasel jsem komponenty, ktery by umely to, co potrebuju, tak
jsem se rozhodl, ze si to napisu sam s pouzitim WinInet. Ale jaksi
jsem se zasekl na pouziti dane fce
Takze, pokud by nekdo z vas byl tak hodny a poslal mi kousek kodu, kde
bych se mohl podivat, jak na to, budu mu velmi vdecny.
Predem diky.
--
Best regards,
Martin mailto:martin@aprog.cz
Odpovedá: Milan Cizek
23. 10. 2002 21:30
> potreboval bych nejakou ukazku kodu s pouzitim %subj%. Jde mi o to, ze
> delam aplikaci, ktera musi komunikovat s webem a musim tam pouzit
> session. Nenasel jsem komponenty, ktery by umely to, co potrebuju, tak
> jsem se rozhodl, ze si to napisu sam s pouzitim WinInet. Ale jaksi
> jsem se zasekl na pouziti dane fce
> Takze, pokud by nekdo z vas byl tak hodny a poslal mi kousek kodu, kde
> bych se mohl podivat, jak na to, budu mu velmi vdecny.
function TWebUpdate.PostUpdateInfo: string;
var Hint,Hconn,Hreq: HInternet; Header: string; Accept: array[0..28] of
Char;
Buffer: array[0..ReadBufferSize-1] of Char; BufSize: DWORD; Counter:
integer;
begin
with UpdFile.PostUpdateInfo do
begin
if (URL='') or (Action='') or (Data='') then Exit;
Header:='Content-Type: application/x-www-form-urlencoded';
StrPCopy(Accept,'text/*');
if Proxy='' then
Hint:=InternetOpen('WebUpdate',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0)
{or INTERNET_FLAG_ASYNC }
else
Hint:=InternetOpen('WebUpdate',INTERNET_OPEN_TYPE_PROXY,PChar(Proxy),nil,0);
{or INTERNET_FLAG_ASYNC }
Hconn:=InternetConnect(Hint,PChar(URL),INTERNET_DEFAULT_HTTP_PORT,nil,nil,IN
TERNET_SERVICE_HTTP,0,1);
if Hconn<>nil then
begin
Hreq:=HttpOpenRequest(Hconn,'POST',PChar(Action),nil,nil,nil,0,1);
if Hreq<>nil then
begin
Result:='';
if
HttpSendRequest(Hreq,PChar(Header),Length(Header),PChar(Data),Length(Data))
then
begin
BufSize:=ReadBufferSize;
while (BufSize=ReadBufferSize) do
begin
if not
InternetReadFile(Hreq,@Buffer,ReadBufferSize,BufSize) then Break;
if (BufSize>0) and (BufSize<=ReadBufferSize) then
for Counter:=0 to BufSize-1 do
Result:=Result+Buffer[Counter];
end;
end;
InternetCloseHandle(Hreq);
end else ToLog('Cannot access resource for post');
InternetCloseHandle(Hconn);
end else ToLog('Cannot connect to server for post');
end;
InternetCloseHandle(Hint);
end;
S pozdravem Milan Cizek, amatersky programator, D6.02 Ent
Win2k (SP3) a WinXP, cizek.milan@seznam.cz, ICQ: 59826637